/*
 * 文件: clock.c
 * 模块: 系统毫秒时基与延时
 * 作用:
 *   - 通过 SysTick_Handler 维护全局 tick_ms (1ms 节拍)
 *   - 提供 mspm0_delay_ms()/mspm0_get_clock_ms() 供上层模块使用
 *   - SysTick_Init() 按 CPUCLK_FREQ/1000 配置 1ms 中断
 * 注意:
 *   - 依赖 CPUCLK_FREQ 定义; 需确保系统启动阶段完成 SysTick_Init()
 */

#include "ti_msp_dl_config.h"
#include "clock.h"

volatile unsigned long tick_ms;
volatile uint32_t start_time;

int mspm0_delay_ms(unsigned long num_ms)
{
    start_time = tick_ms;
    while (tick_ms - start_time < num_ms);
    return 0;
}

int mspm0_get_clock_ms(unsigned long *count)
{
    if (!count)
        return 1;
    count[0] = tick_ms;
    return 0;
}

void SysTick_Init(void)
{
    DL_SYSTICK_config(CPUCLK_FREQ/1000);
    NVIC_SetPriority(SysTick_IRQn, 0);
}
void SysTick_Handler(void)
{
    tick_ms++;
}